package com.mvc.app.controllers;

import com.container.app.annotations.ControllerComponent;
import com.mvc.app.Model;
import com.mvc.app.ModelView;
import com.mvc.app.annotations.BeanName;
import com.mvc.app.annotations.ControllerMethod;
import com.mvc.app.annotations.PropertyName;
import com.mvc.app.models.User;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Created with IntelliJ IDEA.
 * User: Georgiana.Scarlat
 * Date: 8/28/12
 * Time: 10:56 AM
 */
@ControllerComponent(name = "controller")
public class Controller {

    public Controller() {
    }

    @SuppressWarnings("UnusedDeclaration")
    @ControllerMethod(name = "info")
    public ModelView getUserInfoPage(HttpServletRequest request, HttpServletResponse response, @BeanName(name = "user") User user) {
        return null;
    }

    @SuppressWarnings("UnusedDeclaration")
    @ControllerMethod(name = "welcome")
    public ModelView getWelcomePage(HttpServletRequest request, HttpServletResponse response, @PropertyName(name = "gender") String gender) {
        return null;
    }

    @SuppressWarnings("UnusedDeclaration")
    @ControllerMethod(name = "bye")
    public ModelView getByePage(HttpServletRequest request, HttpServletResponse response, @PropertyName(name = "user.username") String name) {
        return null;
    }


    @SuppressWarnings("UnusedDeclaration")
    @ControllerMethod(name = "priviledges")
    public ModelView getPrivilegesPage(HttpServletRequest request, HttpServletResponse response, @PropertyName(name = "user.account.type") String account) {
        return null;
    }

    @SuppressWarnings("UnusedDeclaration")
    @ControllerMethod(name = "invalidBeanProp")
    public ModelView invalidBeanProperty(HttpServletRequest request, HttpServletResponse response, @PropertyName(name = "user.profile") String profile) {
        return null;
    }

    @SuppressWarnings("UnusedDeclaration")
    @ControllerMethod(name = "recommendation")
    public ModelView getRecommendationsPage(HttpServletRequest request, HttpServletResponse response, @PropertyName(name = "gender") String gender, @BeanName(name = "user") User user) {
        return null;
    }


    @SuppressWarnings("UnusedDeclaration")
    @ControllerMethod(name = "foo")
    public ModelView foo(HttpServletRequest request, HttpServletResponse response) {
        return null;
    }


    @SuppressWarnings("UnusedDeclaration")
    @ControllerMethod(name = "invalid_controller_method1")
    public ModelView invalidControllerMethod_notAnnotatedParams(HttpServletRequest request, HttpServletResponse response, String someExtraUnknownInfo) {
        return null;
    }

    @SuppressWarnings("UnusedDeclaration")
    @ControllerMethod(name = "invalid_controller_method2")
    public ModelView invalidControllerMethod_weirdAnnotatedParams(HttpServletRequest request, HttpServletResponse response, @SuppressWarnings("") String someExtraUnknownInfo) {
        return null;
    }

    @SuppressWarnings("UnusedDeclaration")
    @ControllerMethod(name = "invalid_controller_method_params0")
    public ModelView invalidControllerMethod_params0() {
        return null;
    }

    @SuppressWarnings("UnusedDeclaration")
    @ControllerMethod(name = "invalid_controller_method_params1")
    public ModelView invalidControllerMethod_params1(HttpServletRequest request) {
        return null;
    }

    @SuppressWarnings("UnusedDeclaration")
    @ControllerMethod(name = "invalid_controller_method_params2")
    public ModelView invalidControllerMethod_params2(HttpServletResponse response) {
        return null;
    }

    @SuppressWarnings("UnusedDeclaration")
    @ControllerMethod(name = "invalid_controller_method_params3")
    public ModelView invalidControllerMethod_params3(HttpServletResponse response, HttpServletRequest request) {
        return null;
    }

    @SuppressWarnings("UnusedDeclaration")
    @ControllerMethod(name = "invalid_controller_method_return")
    public Model invalidControllerMethod_return(HttpServletRequest request, HttpServletResponse response) {
        return null;
    }


}
